import pygame
import sys
import math

# 初始化pygame
pygame.init()

# 设置窗口大小
screen_width, screen_height = 800, 600
screen = pygame.display.set_mode((screen_width, screen_height))

# 设置颜色
WHITE = (255, 255, 255)
RED = (255, 0, 0)

# 圆形物体的属性
circle_radius = 30
circle_x, circle_y = screen_width // 2, screen_height // 2  # 初始位置
circle_dx, circle_dy = 0.5, 0.5  # 初速度
circle_mass = 1  # 质量，用于后续可能的物理计算

# 矩形框的属性
rect_x, rect_y = 0, 0
rect_width, rect_height = screen_width, screen_height - 50  # 留下一些空间用于显示分数等

# 游戏主循环
running = True
while running:
    # 退出检测
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    # 清除屏幕，以形成动画
    screen.fill(WHITE)

    # 更新圆形物体的位置，使用的是位置加上移动速度形成移动的方法
    circle_x += circle_dx
    circle_y += circle_dy

    # 检测圆形物体与矩形框的碰撞
    if circle_x - circle_radius < rect_x or circle_x + circle_radius > rect_x + rect_width:
        # 与矩形框的左右边碰撞
        circle_dx = -circle_dx  # 反弹
    if circle_y - circle_radius < rect_y or circle_y + circle_radius > rect_y + rect_height:
        # 与矩形框的上下边碰撞
        circle_dy = -circle_dy  # 反弹

    # 绘制圆形物体
    pygame.draw.circle(screen, RED, (int(circle_x), int(circle_y)), circle_radius)

    # 绘制矩形框（可选）
    pygame.draw.rect(screen, (0, 0, 255), (rect_x, rect_y, rect_width, rect_height), 2)

    # 更新屏幕显示
    pygame.display.flip()

# 退出pygame
pygame.quit()
sys.exit()